package com.ssm.zyn.service.impl;

import com.ssm.zyn.dao.RoleMapper;
import com.ssm.zyn.dao.RolelimitMapper;
import com.ssm.zyn.eo.RoleEOpage;
import com.ssm.zyn.model.Role;
import com.ssm.zyn.service.Roleservice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 实现业务及流程接口当中的内容
 */
@Service
public class RoleServiceImpl implements Roleservice {

    @Autowired
    private RoleMapper roleMapper;
    @Autowired
    private RolelimitMapper rolelimitMapper;
    /**
     * 角色添加方法实现
     *
     * @param role 角色实体
     * @return 是否成功（-1：重复信息）
     */
    @Override
    public int AddtRole(Role role) {
        int returnInt = 0;
        /**1.业务的判断
         * (1)角色名称不能重复
         */
        //(1)判断角色

            //2.数据的添加
            int addRoleInt = roleMapper.insertRole(role);
            //3.返回值的设置
            returnInt = addRoleInt;
        return returnInt;
    }

    /**
     * 角色更新
     * @param role 角色实体
     * @return更新是否成功（-1：更新执行SQL报错）
     */
    @Override
    public int UpdateRole(Role role) {
        int isUpdate = 0;
        /*1.没有相关业务流程的判断*/
        try {
            isUpdate = roleMapper.updateRole(role);
        } catch (Exception e) {
            isUpdate = -1;
            //打印更新时报错的情况
            System.out.println("更新角色信息时执行SQL报错的原因为"+e.getMessage());
        }
        return isUpdate;
    }

    /**
     * 删除
     * @param rid
     * @return
     */
    @Override
    public int DeleteRole(int rid) {
        int delRole=0;
        /*1.有关业务流程的判断*/
        //（1）删除的角色不能与人员角色权限中间表有关联
        try{
            //返回结果总数量小于1，才可以删除
              if (rolelimitMapper.getRoleCount(rid)<1){
                  delRole=roleMapper.delRole(rid);
              }
        }catch (Exception e){
            delRole=-1;
            System.out.println("删除角色信息时执行SQL报错，信息为"+e.getMessage());
        }

        return delRole;
    }

    @Override
    public List<RoleEOpage> getWhereAll(RoleEOpage roleEOpage) {
        List<RoleEOpage> listRoleEo= roleMapper.getWhereAll(roleEOpage);
    return listRoleEo;
    }

    @Override
    public List<RoleEOpage> getRoleByRname(String rname) {
        List<RoleEOpage> list= roleMapper.getRoleByRname(rname);
        return list;
    }
}
